package com.yeyks.common.base;

import com.yeyks.common.exception.ServiceException;

import java.util.Collection;

/**
 * @author fuchangshuai
 * @time 2019/02/20
 */
public final class Arguments {

    public static boolean isNullOrZero(Integer i) {
        return ((i == null) || (i == 0));
    }

    /**
     * 判断int类型是否为null，为null抛出信息
     *
     * @param i
     * @param msg
     */
    public static void intIsNull(Integer i, String msg) {
        if (null == i) {
            throw new ServiceException(msg);
        }
    }

    /**
     * 判断int类型的是否小于0，小于0抛出信息
     *
     * @param i
     * @param msg
     */
    public static void intLtZero(Integer i, String msg) {
        if (i < 0) {
            throw new ServiceException(msg);
        }
    }

    /**
     * 判断int类型的是否为0，为0抛出信息
     *
     * @param i
     * @param msg
     */
    public static void intEqualZero(Integer i, String msg) {
        if (i == 0) {
            throw new ServiceException(msg);
        }
    }

    /**
     * 判断T是否为空，为空抛出信息
     *
     * @param t
     * @param msg
     * @param <T>
     */
    public static <T> void beanIsNull(T t, String msg) {
        if (null == t) {
            throw new ServiceException(msg);
        }
    }

    /**
     * 判断str1和str2是否相等，相等抛出信息
     *
     * @param str1
     * @param str2
     * @param msg
     */
    public static void strEqualStr(String str1, String str2, String msg) {
        if (str1.equals(str2)) {
            throw new ServiceException(msg);
        }
    }

    /**
     * 判断str1和str2是否相等，不相等抛出信息
     *
     * @param str1
     * @param str2
     * @param msg
     */
    public static void strNotEqualStr(String str1, String str2, String msg) {
        if (!str1.equals(str2)) {
            throw new ServiceException(msg);
        }
    }

    /**
     * 判断字符串为空
     *
     * @param str
     * @return
     */
    public static boolean strIsNull(String str) {
        return (str == null || str.trim().equals("") || str.trim().length() == 0);
    }

    /**
     * 判断字符串不为空
     *
     * @param str
     * @return
     */
    public static boolean strNotNull(String str) {
        return !strIsNull(str);
    }

    /**
     * 判断字符串是否为空，为空抛出信息
     *
     * @param str
     * @param msg
     */
    public static void strIsNull(String str, String msg) {
        if ((str == null || str.trim().equals("") || str.trim().length() == 0)) {
            throw new ServiceException(msg);
        }
    }

    /**
     * 判断集合为空，为空抛出信息
     *
     * @param list
     * @param msg
     * @param <T>
     */
    public static <T extends Collection> void listIsNull(T list, String msg) {
        if (listIsNull(list)) {
            throw new ServiceException(msg);
        }
    }

    /**
     * 判断集合不为空，不为空抛出信息
     *
     * @param list
     * @param msg
     * @param <T>
     */
    public static <T extends Collection> void listNotNull(T list, String msg) {
        if (!listIsNull(list)) {
            throw new ServiceException(msg);
        }
    }

    /**
     * 判断集合是否为空
     *
     * @param list
     * @param <T>
     * @return
     */
    public static <T extends Collection> Boolean listIsNull(T list) {
        return null == list || list.size() == 0;
    }

    /**
     * 判断为true，抛出信息
     *
     * @param flag
     * @param msg
     */
    public static void isTrue(Boolean flag, String msg) {
        if (flag) {
            throw new ServiceException(msg);
        }
    }

    /**
     * 判断为false，抛出信息
     *
     * @param flag
     * @param msg
     */
    public static void isFalse(Boolean flag, String msg) {
        if (!flag) {
            throw new ServiceException(msg);
        }
    }
}

